package edu.zut.part4;

import java.util.Arrays;
import java.util.Random;
import java.util.Scanner;

public class ArrayDemo2 {
    public static void main(String[] args)
    {
        int[] array = new int[10];
        Random rand = new Random();
        for (int i = 0; i < array.length; i++) {
            array[i] = rand.nextInt(100);
        }
        System.out.println("一维数组的值为：");
        for (int a: array) {
            System.out.print(a+"  ");
        }
        System.out.println();
//        使用Arrays.sort（）方法进行数组排序
        Arrays.sort(array);
//        输出排序后的一维数组的值
        System.out.println("排序后的一维数组的值为");
        for (int i = 0; i < array.length; i++) {
            System.out.print(array[i]+"  ");
        }
        System.out.println();
//        使用Array.binarySearch（）实现数组中值的查找（二分法）
//        使用binarySearch（）方法前必须保证数组是有序的
//        若查找的数值在数组中，则返回数值在数组中的下标，若有多个相同的值则返回第一个值的下标
//        若查找的数值不在数组中，则返回负值
//        查找的数值由用户输入
        System.out.println("请输入需要查找的数值：");
        Scanner input = new Scanner(System.in);
        int num =  input.nextInt();
        int index = Arrays.binarySearch(array,num);
        if(index >= 0)
            System.out.println("查找的"+num+"值存在，在数组中的位置为:"+index);
        else
            System.out.println("查找的"+num+"值不存在");
//      数组控制功能
//        实现数组到新数组的全部复制
        int[] copyArray = Arrays.copyOf(array,array.length);
//        输出数组的值
        System.out.println("复制后的一维数组的值为：");
        for (int i = 0; i < copyArray.length; i++)
        {
         System.out.print(copyArray[i]+"  ");
        }
        System.out.println();
//        实现原数组前五个数组的复制
        int[] copyArray1 = Arrays.copyOf(array,5);
        System.out.println("复制后的一维数组的值为：");
        for (int i = 0; i < copyArray1.length; i++)
        {
         System.out.print(copyArray1[i]+"  ");
        }
        System.out.println();
//        实现原数组从第2位到第5位值的复制【下标从1到4】；
        int[] copyArray2 = Arrays.copyOfRange(array,1,4);
//        输出数组的值
        System.out.println("复制后的一维数组的值为：");
        for (int i = 0; i < copyArray2.length; i++)
        {
        System.out.print(copyArray2[i]+"  ");
        }
        System.out.println();
//        数组比较equals()
//        判断数组Array与copyArray两个数组是否相同
        boolean flag = Arrays.equals(array,copyArray);
        if (flag)
        {
        System.out.println("两个数组相同");
        }
        else
            System.out.println("两个数组不同");
//        比较数组array与copyArray1
        boolean flag1 = Arrays.equals(array,copyArray1);
        if (flag1)
            System.out.println("两个数组相同");
        else
            System.out.println("两个数组不同");
//        如果两个数组为空，则是相同的
        int[] array1 = null;
        int[] array2 = null;
        boolean flag2 = Arrays.equals(array1,array2);
        if(flag2)
            System.out.println("两个数组相同");
        else
            System.out.println("两个数组不同");
    }
}
